package cn.edu.sdjzu.knoverse.model.vo.kg;

import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 文件信息VO对象，包含完整的文件信息
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "FileInfoVo对象", description = "文件信息，包含文件ID、名称、路径、大小、类型等信息")
public class FileInfoVo {
    
    @Schema(name = "fileId", description = "文件ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long fileId;
    
    @Schema(name = "filename", description = "文件名称")
    private String filename;
    
    @Schema(name = "filepath", description = "文件存储路径")
    private String filepath;
    
    @Schema(name = "fileSize", description = "文件大小(字节)")
    private Long fileSize;
    
    @Schema(name = "fileType", description = "文件MIME类型")
    private String fileType;
    
    @Schema(name = "downloadCount", description = "下载次数")
    private Integer downloadCount;
    
    @Schema(name = "url", description = "文件完整访问URL")
    private String url;
    
    @Schema(name = "createTime", description = "创建时间")
    private LocalDateTime createTime;
    
    @Schema(name = "updateTime", description = "更新时间")
    private LocalDateTime updateTime;
} 